﻿using System;
using System.Diagnostics;
using System.Windows.Forms;

namespace Gescan
{
    public static class clsInicio
    {
        /// <summary>
        /// Punto de entrada principal para la aplicación.
        /// </summary>
        [STAThread]
        public static void Main() //string[] args)
        {
            try
            {
                // MessageBox.Show("I InicializarVariablesShared");
                frmPrincipalBase.InicializarVariablesShared();
                // MessageBox.Show("F InicializarVariablesShared");

                // MessageBox.Show("I _strArrancarComoAdmin");
                bool _bolArrancarComoAdmin = Utiles.Aplicacion.AppConfigRecuperar("ArrancarComoAdministrador", "0") == "S";
                // MessageBox.Show("F _strArrancarComoAdmin: " + _bolArrancarComoAdmin.ToString());

                // MessageBox.Show("I Debugger");
                bool _bolEsDEbug = Debugger.IsAttached;
                // MessageBox.Show("F Debugger");

                bool _bolEsAdmin = true;
                // MessageBox.Show("I ValidateAdministratorModeAndRestart");

                if (!_bolEsDEbug && !System.IO.File.Exists(clsVariables.str_DllControlSerial)) //Sino es debug y no existe la dll de control
                {
                    if (_bolArrancarComoAdmin) _bolEsAdmin = RunAsAdministrator.ValidateAdministratorModeAndRestart(true);
                    // MessageBox.Show("F ValidateAdministratorModeAndRestart");
                }

                if (_bolEsDEbug || !_bolArrancarComoAdmin || (_bolArrancarComoAdmin && _bolEsAdmin))
                {
                    // MessageBox.Show("I Entra");

                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);

                    // MessageBox.Show("I frmPrincipalMaca");
                    Application.Run(new frmPrincipalMaca()); // frmPrincipalBase
                    // MessageBox.Show("F frmPrincipalMaca");
                }
                //}
            }
            catch (Exception _Ex)
            {
                MessageBox.Show("Error en Main. Err:" + _Ex.ToString());
                throw;
            }

        }
    }
}

